Za konstrukciju osnovnih programskih jezika koriste se sledeći elementi:
- Simboli - osnovni, nedeljivi znakovi, od kojih se gradi tekst programa na datom jeziku. Skup svih simbola obrazuje alfabet jezika.
- Lekseme - nizovi simbola alfabeta koji imaju određeno značenje. Skup leksema i pravila njihovog formiranja predstavljaju leksiku jezika.
- Izrazi - nizovi leksema zapisanih u strogoj korespodenciji sa pravilima jezika.
- Naredbe (operatori, instrukcije ili komande jezika) zadaju potpun opis neke akcije, koja treba da se izvrši.
Definicije:
Skup opisa i naredbi jezika programiranja, koji realizuju algoritam rešenja konkretnog problema, obrazuju program na datom jeziku.
Skup pravila za građenje pravilnih konstrukcija jezika od njegovih elemenata predstavlja sintaksu.
Semantika definiše značenje sintaksno ispravnih konstrukcija jezika.
Opis sintakse programskih jezika
Za razliku od prirodnih jezika, svaki programski jezik ima skup strogo definisanih pravila kojima se opisuje postupak pisanja programa. Pošto se radi o jeziku za komunikaciju sa računarom i najmanja dvosmislenost dovodi do grešaka.
Da bismo razlikovali programski jezik koji se opisuje od jezika pomoću koga se vrši opis, to ćemo programski jezik nazivati prosto jezik, a jezik čijim terminima se vrši njegov opis metajezik.
Sintaksne definicije se često zadaju pomoću specijalne metalingvističke sinbolike koja je poznata pod imenom Prošireni Bekus-Naurov Zapis (Extended Backus-Naur Form). ili skraćeno EBNF. EBNF omogućava vrlo precizan i kompaktan opis elementarnih jezika, korišćenjem nekoliko simbola specijalne namene – metasimbola.
Najprostiji pojmovi su simboli i rezervisane reči jezika. Oni se nazivaju terminalni simboli ili terminali i pišu se između navodnika.
Svi ostali pojmovi – neterminali – se postepeno izvode iz terminalnih pomoću specijalnih metalingvističkih formula i stavljaju se između uglastih zagrada.
EBNF koristi sledeće simbole:
::= znači ” je po definiciji”
| znači ”ili”,
< > znači ”opis pomoću metajezika neke strukture jezika”, tj. ograđuje neterminalni pojam,
{A} označava da se znak A u zagradi ponavlja proizvoljan broj puta,
[A] označava pojavljivanje znaka A nijedanput ili jedanput.
Na primer, pojam ime, koji se u svim programerskim jezicima koristi za označavanje osnovnih objekata jezika, definiše se sa:
<ime>::=<slovo> {<slovo> | <cifra>}
U poslednje vreme za opis sintakse jezika, zbog veće preglednosti, koriste se sintaksni dijagrami.
Oni se sastoje iz kružića, ovalnih simbola i pravougaonika povezanih u određenom poretku. Kružići ili ovali označavaju terminale. Pravougaonici označavaju konstrukcije koje se naknadno definišu (neterminale), tj. koje se oslanjaju na druge sintaksne dijagrame.
Npr:

Između EBNF i sintaksnih dijagrama postoji veza koja omogućava predstavljanje pojmova koji su zapisani u EBNF preko sintaksnih dijagrama i obrnuto.
Primeri:
